package cn.xzhang.boot.model.dto.wallpaperDetails;

import org.springframework.format.annotation.DateTimeFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;


/**
 * 壁纸基础信息类
 *
 * @author <a href="https://github.com/XiaoZhangCode">XiaoZhangCode</a>
 */
@Data
@Schema(name = "壁纸基础信息类", description = "壁纸基础信息")
public class WallpaperDetailsBaseDTO implements Serializable {

    @NotNull(message = "壁纸昵称不能为空")
    @Schema(description = "壁纸昵称",requiredMode = Schema.RequiredMode.REQUIRED)
    private String nickname;

    @NotNull(message = "壁纸描述不能为空")
    @Schema(description = "壁纸描述",requiredMode = Schema.RequiredMode.REQUIRED)
    private String description;

    @Schema(description = "分类ID")
    @NotEmpty(message = "分类ID不能为空")
    private Long classId;

    @NotEmpty(message = "壁纸小图URL不能为空")
    private String smallPicUrl;

    @NotEmpty(message = "壁纸大图URL不能为空")
    @Schema(description = "壁纸大图URL")
    private String picUrl;

    @NotNull(message = "壁纸标签不能为空")
    @Schema(description = "壁纸标签",requiredMode = Schema.RequiredMode.REQUIRED)
    private List<String> tabs;

    @Schema(description = "壁纸评分",requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer score = 5;

    @Schema(description = "浏览量")
    private Integer viewNum = 0;

    @Schema(description = "收藏数")
    private Integer favourNum = 0;

    @Schema(description = "下载量")
    private Integer downloadNum = 0;

    /**
     * 审核状态
     * @link {@link cn.xzhang.boot.model.enums.ReviewStatusEnum}
     */
    @Schema(description = "审核状态")
    private Integer reviewStatus = 0;

    @Schema(description = "审核信息",requiredMode = Schema.RequiredMode.REQUIRED)
    private String reviewMessage;

    @Schema(description = "审核人id",requiredMode = Schema.RequiredMode.REQUIRED)
    private Long reviewerId;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Schema(description = "审核时间",requiredMode = Schema.RequiredMode.REQUIRED)
    private java.util.Date reviewTime;


}
